package com.desay.pangoo.itmt.utils;

import cn.hutool.core.date.DateTime;
import com.desay.pangoo.common.lite.lang.web.BusinessException;
import com.desay.pangoo.itmt.enums.ExceptionCodeEnum;

/**
 * 根据一个规定的日期格式字符串转换为一个DateTime
 * 规定的日期格式：yyyy-MM
 * @author uids1175
 */
public class DateUtil {

    /**
     * 获取每个月的第一天
     * @param dateStr 规定的日期字符串
     * @return 指定月份的第一天日期
     */
    public static DateTime getBeginDateTime(String dateStr) {
        // 校验日期格式
        DateTime date = validDateFormat(dateStr);
        // 返回指定月份的第一天
        return cn.hutool.core.date.DateUtil.beginOfMonth(date);
    }



    public static DateTime getEndDateTime(String dateStr) {
        // 校验日期格式
        DateTime date = validDateFormat(dateStr);
        // 返回指定月份的最后一天
        return cn.hutool.core.date.DateUtil.endOfMonth(date);
    }

    /**
     * 验证日期格式
     * @param dateStr 规定格式的日期字符串
     * @return 根据日期字符串生成的日期
     */
    private static DateTime validDateFormat(String dateStr) {
        dateStr += "-01";
        String format = "yyyy-MM-dd";
        try {
            return cn.hutool.core.date.DateUtil.parse(dateStr, format);
        } catch (Exception e) {
            throw new BusinessException(ExceptionCodeEnum.DATE_FORMAT_ERROR);
        }
    }

}
